package leetcode101.linked_list;

/**
 * @author Synhard
 * @version 1.0
 * @class Code6
 * @description 83. 删除排序链表中的重复元素
 * 存在一个按升序排列的链表，给你这个链表的头节点 head ，请你删除所有重复的元素，使每个元素只出现一次 。
 *
 * 返回同样按升序排列的结果链表。
 *
 *
 * 示例 1：
 *
 *
 * 输入：head = [1,1,2]
 * 输出：[1,2]
 * 示例 2：
 *
 *
 * 输入：head = [1,1,2,3,3]
 * 输出：[1,2,3]
 *
 * 提示：
 *
 * 链表中节点数目在范围 [0, 300] 内
 * -100 <= Node.val <= 100
 * 题目数据保证链表已经按升序排列
 * 通过次数265,846提交次数494,581
 *
 * @tel 13001321080
 * @email 823436512@qq.com
 * @date 2021-06-11 21:35
 */
public class Code6 {

    static class ListNode {
        int val;
        ListNode next;
        ListNode() {

        }
        ListNode(int val) {
            this.val = val;
        }
        ListNode(int val, ListNode next) {
            this.val = val;
            this.next = next;
        }
    }

    public static void main(String[] args) {

    }

    public ListNode deleteDuplicates(ListNode head) {
        if (head == null || head.next == null) {
            return head;
        }
        ListNode dummyHead = new ListNode(-101, head);
        ListNode pre = dummyHead, suc = head;
        while (suc != null) {
            if (pre.val == suc.val) {
                pre.next = suc.next;
                suc = suc.next;
                continue;
            }
            pre = pre.next;
            suc = suc.next;
        }
        return dummyHead.next;
    }

}
/*
创建头节点是十分有必要的
 */